package com.test.tcp.file;

import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;

/**
 * 服务端接收文件
 * 创建服务器
 * 1.使用serverSocket创建服务器,并指定端口
 * 2.阻塞式等待连接accept()方法
 * 3.操作:输入输出流操作
 * 4.释放资源
 *
 * @create: 2019-05-29 22:29
 **/
public class FileServer {

    public static void main(String[] args) throws IOException {
        System.out.println("服务器端已启动...");

        //1.使用serverSocket创建服务器,并指定端口
        ServerSocket socket = new ServerSocket(8888);

        //2.阻塞式等待连接accept()方法
        Socket client = socket.accept();
        System.out.println("一个客户端请求了服务器");

        //3.操作:输入输出流操作(对于服务器端来说是使用输入流)
        //文件拷贝
        //从tcp连接中获取内容输入到内存中
        InputStream is = new BufferedInputStream(client.getInputStream());
        OutputStream os = new BufferedOutputStream(new FileOutputStream("src/tcpCopy.jpg"));

        byte[] flush = new byte[1024];
        int l = -1;
        //继续使用输出流从内存输出内容
        while ((l = is.read(flush)) != -1) {
            os.write(flush);
        }
        //刷新流,把流内的信息输出出来
        os.flush();

        //4.释放资源
        os.close();
        is.close();
        client.close();
        socket.close();

    }


}
